Scroll to navigation

MEMCHR(3) Linux Programmer's Manual MEMCHR(3)

名前

memchr, memrchr, rawmemchr - 文字を探すためにメモリをスキャンする

書式

#include <string.h>
void *memchr(const void *s, int c, size_t n);
void *memrchr(const void *s, int c, size_t n);
void *rawmemchr(const void *s, int c);


glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

rawmemchr(): _GNU_SOURCE

説明

memchr() 関数は、ポインタ s が指し示すメモリブロックの 先頭の n バイトから文字 c を探す。 最初に c (unsigned char と解釈される) が見つかった時点で動作が停止する。

memrchr() 関数は memchr() 関数に似ているが、 先頭から順方向に探すのではなく、 ポインタ s が指し示す n バイトのメモリブロックの 末尾から逆向きに探す。

rawmemchr() 関数は memchr() と同様だが、 文字 c が文字列 s 内のどこかにあることを前提にして (つまり、プログラマはそのことを知っている)、 最適化した方法で文字 c の検索を実行する (すなわち、終端の NULL バイトのチェックも行われないし、 検索範囲の上限を示す引き数 n も使用されない)。 文字 c が文字列 s 内にない場合、 rawmemchr() は文字列末尾を越えて検索を実行するかもしれず、結果は不定である。 次に示す呼び出しは、文字列終端の NULL バイトの位置を特定する 高速な手段である。

char *p = rawmemchr(s, '\0');

返り値

memchr() 関数と memrchr() 関数は一致する文字へのポインタを返し、 もし文字が指定メモリ領域に現れない場合は NULL を返す。

rawmemchr() 関数はマッチするバイトが見つかった場合はマッチしたバイトへのポインタを返す。 マッチするバイトが見つからなかった場合、結果は不定である。

バージョン

rawmemchr() は glibc バージョン 2.1 で初めて登場した。

memrchr() は glibc バージョン 2.2 で初めて登場した。

準拠

memchr() 関数は SVr4, 4.3BSD, C89, C99, POSIX.1-2001 に準拠する。

memrchr() 関数は GNU 拡張であり、glibc 2.1.91 から使用可能である。

rawmemchr() 関数は GNU 拡張であり、glibc 2.1 から使用可能である。

関連項目

index(3), rindex(3), strchr(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3), wmemchr(3)

2008-08-11